<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    /**
     * 对版本号数组进行降序排序
     * @param {string[]} version - 版本号字符串数组，元素格式为"x.y.z"（点分十进制）
     * @returns {string[]} 排序后的版本号数组（从大到小）
     */
    function versionSort(version){
        // 使用自定义排序规则
        return version.sort((a,b)=>{
            // 将版本号拆分为数字数组（例如："1.2" -> [1,2]）
            const arrA = a.split('.').map(i => parseInt(i))
            const arrB = b.split('.').map(i => parseInt(i))

            // 确定最大分段数用于遍历比较
            const maxLength = Math.max(arrA.length,arrB.length)

            // 逐段比较版本号
            for(let i = 0;i < maxLength;i++){
                // 处理长度不一致的版本号（缺失段视为0）
                const currentA = arrA[i] || 0
                const currentB = arrB[i] || 0

                // 当分段值不同时，按降序排列
                if(currentA !== currentB){
                    return currentB - currentA
                }
            }
            // 所有分段均相同则保持原顺序
            return 0
        })
    }

    const versions = [
        "1.0.0", "2.5.3", "1.1", "0.9.9",
        "3.0", "1.0.1", "2.0.0", "1.2.0"
    ];

    const sorted = versionSort(versions);
    console.log(sorted);
    /* 输出:
    [
      "0.9.9", "1.0.0", "1.0.1",
      "1.1",   "1.2.0", "2.0.0",
      "2.5.3", "3.0"
    ]
    */
</script>
</html>